// 给定一个二叉树，返回它的前序遍历。

// 常规写法
const preorderTraversal1 = function (root: TreeNode | null) {
    const res: number[] = []; // 结果数组
    // 深度优先遍历辅助函数
    const preorderTraversal_DFS = function (root: TreeNode | null) {
        if (root === null) {
            return;
        }
        res.push(root.val);
        preorderTraversal_DFS(root.left);
        preorderTraversal_DFS(root.right);
    };
    preorderTraversal_DFS(root);
    return res;
};


// 很秀的语法糖写法
const preorderTraversal2 = function (root: TreeNode | null): number[] {
    // 利用展开运算符的写法
    return root === null ? [] : [
        root.val,
        ...preorderTraversal2(root.left),
        ...preorderTraversal2(root.right)
    ]
};

